/**
 * 基于uni.request方法封装项目全局公共请求方法
 * 方法：
 * 1. new Promise()
 * 2. 异步函数（推荐）=> 加async修饰的函数执行完返回Promise对象=》resolve结果是函数return的值
 */
// 存储token的属性
const YG_TOKEN = 'hm-token', BASE_URL = 'https://api-ugo-dev.itheima.net';
const request = async ({ url, data, method, header = {} }) => {
  /**
   * 调用request方法
   * 1. 显示loading
   * 2. header中统一添加token
   * 3. 调用uni.request根据传递参数发送请求
   * 4. 请求成功返回结果=》关闭loading
   */
  uni.showLoading({
    title: '加载中...',
    mask: true
  });
  let token = uni.getStorageSync(YG_TOKEN)
  // 统一添加token
  if (token) {
    header.Authorization = token
  }
  const [error, da] = await uni.request({
    url: `${BASE_URL}${url}`,
    method,
    data,
    header
  })
  // 关闭loading
  uni.hideLoading();
  if (!error) {
    //  请求成功=>简化数据并返回
    const _data = {
      data: da.data.message,
      msg: da.data.meta
    }
    return _data
  }
}

// 封装插件
const MyPlugs = {
  install(Vue) {
    // 挂载全局网络请求方法request
    Vue.prototype.request = request
  }
}

// 导出插件
export { MyPlugs }

export default request
